/*
vuex的核心管理对象模块
*/
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

//状态对象
const state = {//初始化状态
  count: 0
}

//包含多个更新state函数的对象
const mutations = {
  //增加的mutation
  INREMENT (sate) {
    sate.count++
  },
  //减少的mutation
  DEREMENT (sate) {
    sate.count--
  }
}

//包含多个对应事件回调函数的对象
const actions = {
  //增加action
  inrement ({commit}) {
    //提交mutation
    commit('INREMENT')
  },
  //减少action
  decrement ({commit}) {
    //提交mutation
    commit('DEREMENT')
  },
  //带条件的action
  incrementIfOdd ({commit, state}) {
    if (state.count%2===1) {
      commit('DEREMENT')
    }
  },
  //异步的action
  incrementAsync ({commit}) {
    //在action中直接可以执行异步代码
    setTimeout(()=>{
      //提交mutation
      commit('INREMENT')
    },1000)
  }
}

//包含多个getter计算属性函数的对象
const getters = {
  evenOrOdd (state) {//不需要调用，只需要读取属性值
    return state.count%2===0 ? '偶数' : '奇数'
  }
}

export default new Vuex.Store({
  state, //状态对象
  mutations, //包含多个更新state函数的对象
  actions, //包含多个对应事件回调函数的对象
  getters //包含多个getter计算属性函数的对象
})
